Skip to content

Conversation

@trevorade
Copy link
Contributor

Motivation for features / changes

When tsc's --target is updated es2022 or newer, the initialization order of parameter properties changes. Inline field initializers that directly or indirectly reference parameter properties can break with this change as the parameter properties may be initialized if the reference occurs too soon.

This can be difficult to accurately statically detect because it's not always clear if callbacks are executed immediately or later.

Migrating to Angular's inject() function solves the problems as parameter properties are no longer used.

Technical description of changes

Updates classes where some inline field initializer has an indirect reference to a parameter property to use Angular inject().

Screenshots of UI changes (or N/A)

N/A

Detailed steps to verify changes work correctly (as executed by you)

Should be a no-op refactor. Simply verify test flows the involve all modified classes.

Alternate designs / implementations considered (or N/A)

We could also avoid this upcoming issue by moving the inline field initializers that reference uninitialized parameter properties into the constructor body. This is generally seen as an inferior change though.

trevorade and others added 3 commits May 2, 2025 09:31
Specifically, I am focusing on code locations where an inline field initializer references an uninitialized parameter property.

When tsc's `--target` is updated `es2022` or newer, the initialization order of parameter properties changes.
@arcra arcra merged commit 8702a6c into tensorflow:master May 9, 2025
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants